//
//  WYComposeself+Extension.swift
//  WYWeibo
//
//  Created by wangyi on 16/8/1.
//  Copyright © 2016年 wangyi. All rights reserved.
//

import UIKit

extension WYComposeTextView    {
    
    //根据表情模型添加富文本
    func insertEmoticon(emoticon: WYEmoticon) {
        
        if emoticon.type == "0" {

    //            let chs = emoticon.chs!
//            self.insertText(chs)
            //通过图片创建富文本
            //记录上一次的富文本
            let originaAttributeStr = NSMutableAttributedString(attributedString: self.attributedText)
            //1 获取图片
            let image = UIImage(named: emoticon.path!)
            //2 通过图片转化为文本附件(NStextAttachment)
            let attachment = NSTextAttachment()
            attachment.image = image
            //获取行高 指定图片大小
            let fontHeight = self.font!.lineHeight
            attachment.bounds = CGRect(x: 0, y: -4, width: fontHeight, height: fontHeight)
            //3 通过 NStextAttachment 创建富文本
            let attributtedStr = NSAttributedString(attachment: attachment)
//            originaAttributeStr.appendAttributedString(attributtedStr)
            //获取 self 的选中范围
            var range = self.selectedRange
            //将选中的范围替换为想要的恩富文本
            originaAttributeStr.replaceCharactersInRange(range, withAttributedString: attributtedStr)

            //5指定富文本值大小
            originaAttributeStr.addAttribute(NSFontAttributeName, value: self.font!, range: NSMakeRange(0, originaAttributeStr.length))
            //4 给我们的 textView 设置富文本(attributtedtext)
            self.attributedText = originaAttributeStr
            //  每次点击让其光标位置加1, 设置其选中范围的长度为0
            range.location += 1; range.length = 0
            //根据选中的范围设置贯标的位置
            self.selectedRange = range
            
            //自己发送通知 textView 改变了 这个的目的是解决输入表情的时候 textView 的文字消失
            NSNotificationCenter.defaultCenter().postNotificationName(UITextViewTextDidChangeNotification,object: nil)
            //通过代理对象的调用\
            //使用问号 判断是否是实现
            self.delegate?.textViewDidChange?(self)
        } else {
        
            let emoji = (emoticon.code! as NSString).emoji()
            self.insertText(emoji)
        }
   
    }

 }
